package cn.com.zpark;

import cn.com.zpark.bean.Emp;
import cn.com.zpark.utils.DruidUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * 处理用户登录类
 */
@WebServlet("/login.do")
public class ServletLogin extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /**
         * 实现用户登录功能，
         *      1、获取用户提交的用户名和密码
         *      2、根据用户提交的用户名前往数据库中查询对应的数据
         *      3、将查询结果与用户提交的数据进行对比
         *      4、对比成功返回登录成功，失败则返回用户名或密码错误
         */
        HttpSession session = request.getSession();
        String msg = null;

        // 1、获取用户提交的用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 2、根据用户提交的用户名前往数据库中查询对应的数据
        if(username == null){
            msg = "用户名不能为空";
            session.setAttribute("msg", msg);
            // 登录失败重定向到登录页码
            response.sendRedirect(request.getContextPath()+"/view/login.jsp");
        }


        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet res = null;
        Emp emp = null;

        try {
            // 获取数据库连接
            conn = DruidUtils.getConn();

            // 创建sql语句
            String sql = "select * from user where username=?";

            stat = conn.prepareStatement(sql);

            // 替换占位符
            stat.setString(1, username);

            // 执行查询
            res = stat.executeQuery();

            // 遍历结果集
            if(res.next()){
                // 有数据
                while (res.next()) {
                    emp = new Emp();
                    emp.setId(res.getInt("id"));
                    emp.setUsername(res.getString("username"));
                    emp.setPwd(res.getString("pwd"));
                }
            }else{
                // 没有数据
                msg = "用户名或者密码错误";
                session.setAttribute("msg", msg);
                // 登录失败重定向到登录页码
                response.sendRedirect(request.getContextPath()+"/view/login.jsp");
            }


            System.out.println(emp.toString());

            // 3、将查询结果与用户提交的数据进行对比
            if(!emp.getPwd().equals(password)){
                // 密码错误
                msg = "用户名或者密码错误";
                session.setAttribute("msg", msg);
                // 登录失败重定向到登录页码
                response.sendRedirect(request.getContextPath()+"/view/login.jsp");
            }
            // 密码正确，转发到登录成功页面
            response.getWriter().write("<h1>Success</h1>");

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            // 关闭资源
            DruidUtils.close(res, conn, stat);
        }

    }
}
